#include <iostream>
#include <algorithm>
using namespace std;
int n,m;
bool cmp(int x,int y){
int xO=abs(x%2),yO=abs(y%2);
if(x%m!=y%m)return x%m<y%m;
else if(xO!=yO)return xO>yO;
else if(xO)return x>y;
else return x<y;
}
int main(){
int a[10001];
while(cin>>n>>m&&n!=0){
cout<<n<<" "<<m<<endl;
for(int i=0;i<n;i++){
cin>>a[i];
}
sort(a,a+n,cmp);
for(int i=0;i<n;i++){
cout<<a[i]<<endl;
}
cout<<0<<" "<<0<<endl;
}
}
只要計算出1月0日~輸入的日期間隔幾天,把它mod七天,根據題目1月10日是星期一,可推得1/7是星期五,所以若餘數是0就代表該天是星期五
1.建立每個月有幾天
2.建立星期表(餘數0是星期五,餘數1是星期六...)
3.輸入case數
4.輸入日期
5.將日去加上前幾個月的天數,才能得知1月0日~輸入的日期是間隔了幾天
6.將天數mod 7天去對照星期表
7.輸出
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;//數字會很大,用字串來處理
while(cin>>s)
{
if(s=="0")
{
break;
}
int odd=0,even=0;//odd計算奇數位數的加總
//even計算偶數位數的加總
for(int i=0;i<s.length();i++)//為了要計算每個位數,但系統不知道有幾位數,可用s.length()取出位數
//一定要從i=0開始算
{
if(i%2==1)//先找出奇數位數
{
odd+=(s[i]-'0');//再將奇數位的值加總
/*字串某一個字來計算會用ASCII碼, 因為數字的ASCII碼相連,
所以減掉'0'的ASCII碼就是字串的數字了*/
}
else//再找出偶數位
{
even+=(s[i]-'0');
}
}
if((odd-even)%11==0)//奇偶位數相減能整除11就是11的倍數
{
cout<<s<<" is a multiple of 11."<<endl;
}
else
{
cout<<s<<" is not a multiple of 11."<<endl;
}
}
return 0;
}